In enterprise computer environments, it is often desirable to know what applications are running on specific virtual entities. Some applications may be business critical, such as a database application that manages all current sales transactions for the business, for example. Other applications may be important, but less critical, such as a server that hosts the website for the company. Other applications, such as a server that hosts an intranet for sharing employee news, may be less critical.
Knowledge of the specific applications executing on each of multiple computers, for example, may be used to better manage the computer system of the enterprise. That knowledge may be used to set a data protection policy, with data generated from computers running critical applications being replicated or copied to remote storage more frequently. As another example, that knowledge may be used to balance load, such as by running applications that require significant computing resources on computers that are not running other applications. Furthermore, the knowledge may be used to monitor applications executing on the computer systems of the enterprise.
To determine which applications execute on specific machines, agents may be deployed on those machines. The agents may be designed to work with specific applications and may count the number of instances of the application running on the computer and report back to a centralized controller.